
#include "nane/CodecSystem/Image/PNG/PNGImageEncoder.h"
#include "nane/core/assert.h"

namespace nane 
{
    ////////////////////////////////////////////////////////////////////////////////////////////////
    PNGImageEncoder::PNGImageEncoder()
        : m_output( NULL )
        , m_width( 0 )
        , m_height( 0 )
        , m_format( EPixelFormat::Unknown )
    {
        
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    PNGImageEncoder::~PNGImageEncoder()
    {
        NANE_ASSERT( m_output == NULL, "PNGImageEncoder must be shutdown before destruction" );
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    bool PNGImageEncoder::Initialize( IOutput* _output )
    {
        NANE_ASSERT_RV( _output != NULL && m_output == NULL, "PNGImageEncoder must not be initialized and IOutput must be valid", false );
        m_output = _output;
        return true;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    void PNGImageEncoder::Shutdown()
    {
        NANE_ASSERT_R( m_output != NULL, "PNGImageEncoder must be initialized" );
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    uint32 PNGImageEncoder::Write( const byte* _data, uint32 _count )
    {
        NANE_ASSERT_RV( m_output != NULL, "PNGImageEncoder must be initialized", 0 );
        return 0;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    void PNGImageEncoder::SetWidth( uint32 _width )
    {
        NANE_ASSERT_R( m_output != NULL, "PNGImageEncoder must be initialized" );
        m_width = _width;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    void PNGImageEncoder::SetHeight( uint32 _height )
    {
        NANE_ASSERT_R( m_output != NULL, "PNGImageEncoder must be initialized" );
        m_height = _height;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    void PNGImageEncoder::SetFormat( EPixelFormat::raw_type _format )
    {
        NANE_ASSERT_R( m_output != NULL, "PNGImageEncoder must be initialized" );
        m_format = enum_cast<EPixelFormat>(_format);
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
}   // namespace nane
